using System;
using System.Collections.Generic;
using System.Text;

using HHo_Model;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;


namespace HHo_Negocio
{
    public class GestorQA
    {
        private SqlDataReader oRdr;
        private List<E_Cargo> lstCargos;
        private E_Cargo Cargo;

        public List<E_Cargo> ListarCargos()
        {

            oRdr = SQLHelper.ExecuteReader(SQLHelper.ObtieneCadenaConexion(), System.Data.CommandType.StoredProcedure, "USP_LISTA_CARGOS");

            if (oRdr != null)
            {
                lstCargos = new List<E_Cargo>();
                while (oRdr.Read())
                {
                    Cargo = new E_Cargo();
                    if(oRdr.GetValue(0) != DBNull.Value)
                        Cargo.CargoCodigo = oRdr.GetValue(0).ToString();

                    if (oRdr.GetValue(1) != DBNull.Value)
                        Cargo.CargoDescripcion = oRdr.GetString(1);

                    lstCargos.Add(Cargo);
                    Cargo = null;
                }
                oRdr.Close();
            }
            return lstCargos;
        }

        public List<E_Persona> ConsultarPersonasQA(int codCargo, int IdFlota, string apPat)
        {
            SqlParameter oPrm;
            List<E_Persona> lstPersonas;
            E_Persona oPersona;

            oPrm = new SqlParameter("@CODCARGO", SqlDbType.Int);
            oPrm.Direction = ParameterDirection.Input;
            oPrm.Value = codCargo;

            SqlParameter oPrm1 = new SqlParameter("@FLOTA_MODELO", SqlDbType.Int);
            oPrm1.Direction = ParameterDirection.Input;
            oPrm1.Value = IdFlota;

            SqlParameter oPrm2 = new SqlParameter("@APPAT", SqlDbType.VarChar);
            if(apPat.Trim().Length>0) {
                oPrm2.Size = 100;
                oPrm2.Value = apPat;
            }            

            lstPersonas = new List<E_Persona>();
            oRdr = SQLHelper.ExecuteReader(SQLHelper.ObtieneCadenaConexion(), System.Data.CommandType.StoredProcedure, "USP_CONSULTAR_TRABAJADORES", oPrm, oPrm1, oPrm2);
            if (oRdr != null)
            {
                while (oRdr.Read())
                {
                    oPersona = new E_Persona();
                    if (oRdr.GetValue(0) != DBNull.Value)
                        oPersona.Id = oRdr.GetInt32(0);

                    if (oRdr.GetValue(1) != DBNull.Value)
                        oPersona.CodigoTrabajador = oRdr.GetInt32(1);

                    if (oRdr.GetValue(2) != DBNull.Value)
                        oPersona.Nombre = oRdr.GetString(2);

                    if (oRdr.GetValue(3) != DBNull.Value)
                        oPersona.ApPaterno = oRdr.GetString(3);

                    if (oRdr.GetValue(4) != DBNull.Value)
                        oPersona.ApMaterno = oRdr.GetString(4);

                    if (oRdr.GetValue(5) != DBNull.Value)
                        oPersona.CodigoCargo = oRdr.GetInt32(5);

                    if (oRdr.GetValue(6) != DBNull.Value)
                        oPersona.DesCargo = oRdr.GetString(6);

                    if (oRdr.GetValue(7) != DBNull.Value)
                        oPersona.EsHabilitado = oRdr.GetBoolean(7);

                    if (oRdr.GetValue(8) != DBNull.Value)
                        oPersona.Flotas = oRdr.GetString(8);

                    lstPersonas.Add(oPersona);

                    oPersona = null;
                }
            }
            return lstPersonas;
        }

        public string ObtenerDatosPersonaPorId(int IdPersona)
        {
            E_Persona oPersonal = ConsultarPersonaID(IdPersona);
            return oPersonal.ApPaterno + " " + oPersonal.ApMaterno + ", " + oPersonal.Nombre + " (" + oPersonal.CodigoTrabajadorHH + ")";
        }
        public E_Persona ConsultarPersonaID(int IdPersona)
        {
            SqlParameter oPrm = new SqlParameter("@IDPER", SqlDbType.Int);
            oPrm.Direction = ParameterDirection.Input;
            oPrm.Value = IdPersona;

            SqlDataReader oRdr;
            oRdr = SQLHelper.ExecuteReader(SQLHelper.ObtieneCadenaConexion(), CommandType.StoredProcedure, "HHSS_CONSULTA_PER_QA_ID", oPrm);
            E_Persona oPersona = new E_Persona();
            using (oRdr)
            {
                if (oRdr != null)
                {
                    while (oRdr.Read())
                    {
                        if(oRdr.GetValue(0) != DBNull.Value)
                            oPersona.Id = oRdr.GetInt32(0);

                        if(oRdr.GetValue(1) != DBNull.Value)
                            oPersona.Nombre = oRdr.GetString(1);

                        if(oRdr.GetValue(2) != DBNull.Value)
                            oPersona.ApPaterno = oRdr.GetString(2);

                        if(oRdr.GetValue(3) != DBNull.Value)
                            oPersona.ApMaterno = oRdr.GetString(3);

                        if(oRdr.GetValue(4) != DBNull.Value)
                            oPersona.CodigoTrabajadorHH = oRdr.GetString(4);                        
                    }
                }
            }
            return oPersona;
        }
    }
}
